// This example shows how to read 4 items from an OPC XML-DA server at once, and display their values, timestamps
// and qualities.
using System;
using System.Diagnostics;
using OpcLabs.EasyOpc;
using OpcLabs.EasyOpc.DataAccess;
using OpcLabs.EasyOpc.DataAccess.OperationModel;
namespace DocExamples.DataAccess.Xml
{
class ReadMultipleItems
{
public static void Main1Xml()
{
// Instantiate the client object.
var client = new EasyDAClient();
DAVtqResult[] vtqResults = client.ReadMultipleItems(
new ServerDescriptor { UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx" },
new DAItemDescriptor[]
{
"Dynamic/Analog Types/Double",
"Dynamic/Analog Types/Double[]",
"Dynamic/Analog Types/Int",
"SomeUnknownItem"
});
for (int i = 0; i < vtqResults.Length; i++)
{
Debug.Assert(vtqResults[i] != null);
if (!(vtqResults[i].Exception is null))
{
Console.WriteLine($"vtqResults[{i}] *** Failure: {vtqResults[i].ErrorMessageBrief}");
continue;
}
Console.WriteLine($"vtqResults[{i}].Vtq: {vtqResults[i].Vtq}");
}
}
}
}
# This example shows how to read 4 items from an OPC XML-DA server at once, and display their values, timestamps
# and qualities.
#requires -Version 5.1
using namespace OpcLabs.EasyOpc
using namespace OpcLabs.EasyOpc.DataAccess
# The path below assumes that the current directory is [ProductDir]/Examples-NET/PowerShell/Windows .
Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicCore.dll"
Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassic.dll"
Add-Type -Path "../../../Components/Opclabs.QuickOpc/net472/OpcLabs.EasyOpcClassicComponents.dll"
# Instantiate the client object.
$client = New-Object EasyDAClient
$serverDescriptor = New-Object ServerDescriptor -Property @{
UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx"
}
$vtqResults = [IEasyDAClientExtension]::ReadMultipleItems($client,
$serverDescriptor,
@(
(New-Object DAItemDescriptor("Dynamic/Analog Types/Double")),
(New-Object DAItemDescriptor("Dynamic/Analog Types/Double[]")),
(New-Object DAItemDescriptor("Dynamic/Analog Types/Int")),
(New-Object DAItemDescriptor("SomeUnknownItem"))
))
for ($i = 0; $i -lt $vtqResults.Length; $i++) {
$vtqResult = $vtqResults[$i]
if ($vtqResult.Succeeded) {
Write-Host "vtqResults[$($i)].Vtq: $($vtqResult.Vtq)"
}
else {
Write-Host "vtqResults[$($i)] *** Failure: $($vtqResult.ErrorMessageBrief)"
}
}
# This example shows how to read 4 items from an OPC XML-DA server at once, and display their values, timestamps
# and qualities.
# The QuickOPC package is needed. Install it using "pip install opclabs_quickopc".
import opclabs_quickopc
# Import .NET namespaces.
from OpcLabs.EasyOpc import *
from OpcLabs.EasyOpc.DataAccess import *
from OpcLabs.EasyOpc.DataAccess.OperationModel import *
from OpcLabs.EasyOpc.OperationModel import *
# Instantiate the client object.
client = EasyDAClient()
#
vtqResultArray = IEasyDAClientExtension.ReadMultipleItems(client,
ServerDescriptor('http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx'),
[
DAItemDescriptor('Dynamic/Analog Types/Double'),
DAItemDescriptor('Dynamic/Analog Types/Double[]'),
DAItemDescriptor('Dynamic/Analog Types/Int'),
DAItemDescriptor('SomeUnknownItem')
])
for i, vtqResult in enumerate(vtqResultArray):
assert vtqResult is not None
if vtqResult.Succeeded:
print('vtqResultArray[', i, '].Vtq: ', vtqResult.Vtq, sep='')
else:
print('vtqResultArray[', i, '] *** Failure: ', vtqResult.ErrorMessageBrief, sep='')
print()
print('Finished.')
' This example shows how to read 4 items from an OPC XML-DA server at once, and display their values, timestamps
' and qualities.
Imports OpcLabs.EasyOpc
Imports OpcLabs.EasyOpc.DataAccess
Imports OpcLabs.EasyOpc.DataAccess.OperationModel
Namespace DataAccess.Xml
Partial Friend Class ReadMultipleItems
Public Shared Sub Main1Xml()
Dim client = New EasyDAClient()
Dim vtqResults() As DAVtqResult = client.ReadMultipleItems(
New ServerDescriptor() With {.UrlString = "http://opcxml.demo-this.com/XmlDaSampleServer/Service.asmx"},
New DAItemDescriptor() _
{ _
"Dynamic/Analog Types/Double",
"Dynamic/Analog Types/Double[]",
"Dynamic/Analog Types/Int",
"SomeUnknownItem"
})
For i = 0 To vtqResults.Length - 1
Debug.Assert(vtqResults(i) IsNot Nothing)
If vtqResults(i).Exception IsNot Nothing Then
Console.WriteLine("vtqResult[{0}] *** Failure: {1}", i, vtqResults(i).ErrorMessageBrief)
Continue For
End If
Console.WriteLine("vtqResult[{0}].Vtq: {1}", i, vtqResults(i).Vtq)
Next i
End Sub
End Class
End Namespace